/**
 * 下载服务器文件
 */
var USER_PATH = '';
// 已经下载的文件
// 路径url：时间戳+文件类型
var ALREADY_DOWNLOAD = {}, alreadyKey = 'ALREADY_DOWNLOAD';
// 下载文件的路径
// 时间戳+文件类型：本地路径
var LOADED_FILES = {}, loadedKey = 'LOADED_FILES';
// 正在下载的文件名称
var loadingFilename = null;
// 下载列队
var loadingGroup = [];
// 正在下载的文件云地址
var loadingUrl = null;

/**
 * [initDownload 初始化下载]
 * @Author ljliu    2020-02-09T16:08:34+0800
 * 创建当前用户下载的文件夹，与其他用户分开
 */
function initDownload() {
    var fs = api.require('fs');
    var USER = USER(),
        custId = USER.Get('custId');
    USER_PATH = 'fs://download' + custId;
    ALREADY_DOWNLOAD = api.getPrefs({key: 'alreadyKey', sync: true});
    LOADED_FILES = api.getPrefs({key: 'loadedKey', sync: true});
    if (ALREADY_DOWNLOAD) {
        ALREADY_DOWNLOAD = JSON.parse(ALREADY_DOWNLOAD);
        LOADED_FILES = JSON.parse(LOADED_FILES);
    } else {
        ALREADY_DOWNLOAD = {};
        LOADED_FILES = {};
    }
    fs.createDir({
        path: USER_PATH
    }, function(ret, err) {
        
    });
}

/**
 * [getIsLoad 文件是否现在]
 * @Author ljliu    2020-02-09T17:43:09+0800
 * @param  {[type]} url                      [文件url]
 * @return {[type]}                          [未下载返回null，下载中返回'loading',已下载返回本地路径]
 */
function getIsLoad(url) {
    var localKey = ALREADY_DOWNLOAD[url];
    // 是否下载
    if(localKey) {
        // 已下载
        return LOADED_FILES[localKey];
    }else if(url == loadingUrl) {
        return 'loading';
    }
    return null;
}

/**
 * [insertDownload 插入下载队列]
 * @Author ljliu    2020-02-09T16:10:16+0800
 * 加入下载队列，进行下载
 */
function insertDownload() {
    // 待定
    // 根据具体业务而定
    if(loadingFilename) {
        // 加入队列
    }else {
        // 进行下载
    }
}

/**
 * [downloadSuccess 下载成功]
 * @Author ljliu    2020-02-09T17:03:49+0800
 * @return {[type]} [description]
 */
function downloadSuccess(_url) {
    ALREADY_DOWNLOAD[_url] = loadingFilename+'';
    LOADED_FILES[loadingFilename] = USER_PATH + '/' + loadingFilename;
    api.setPrefs({
        key: alreadyKey,
        value: JSON.stringify(ALREADY_DOWNLOAD),
    });
    api.setPrefs({
        key: loadedKey,
        value: JSON.stringify(LOADED_FILES),
    });
    if(loadingGroup.length > 0) {
        // 从下载队列下载
        loadingGroup = loadingGroup.slice(1, loadingGroup.length);
    }else {
        console.log('全部下载完成');
    }
}

function download(url) {
    if(loadingFilename) {
        console.info('有文件正在下载');
        return;
    }
    loadingUrl = url+'';
    loadingFilename = new Date().getTime() + url.substr(url.length -3);
    api.download({
        url: url,
        savePath: USER_PATH + '/' + loadingFilename,
        report: true,
        allowResume: true
    }, function(ret, err) {
        if (ret.state == 1) {
            //下载成功
            downloadSuccess(loadingUrl);
        } else if (ret.state == 2) {
            console.error(loadingUrl+'===下载失败>>>>'+JSON.stringify(err));
        }else {
            // 下载中
        }
        loadingFilename = null;
        loadingUrl = null;
    });
}